package com.zto.design.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 抽象被观察者接口
 */
public interface Observerable<T> {
    /**
     * 存储订阅者
     */
    List<Callback> callbackList = new ArrayList<>();

    /**
     * 事件驱动--通知所有观察者 做具体操作
     */
    void emit();

    /**
     * 注册订阅者
     *
     * @param t
     */
    void registerEvent(T t);

    /**
     * 移除订阅者
     *
     * @param t
     */
    void removeEvent(T t);
}
